package com.itheima.exception;


import com.itheima.common.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * 全局异常处理器  处理controller 层请求的所有异常
 *
 * @RestControllerAdvice都是对Controller进行增强的，可以全局捕获spring mvc抛的异常。
 * @ControllerAdvice 和 @RestControllerAdvice都是对Controller进行增强的，可以全局捕获spring mvc抛的异常。
 * RestControllerAdvice = ControllerAdvice + ResponseBody
 */
@RestControllerAdvice
@Slf4j
public class MyExceptionController {

    /**
     * @ExceptionHandler(value = Exception.class)
     * ExceptionHandler的作用是用来捕获指定的异常。
     */
    //  此方法可以在 controller层中出现 RuntimeException 以及其子类异常 是执行
    @ExceptionHandler(RuntimeException.class)
    public R exception1(RuntimeException exception) {
        exception.printStackTrace();
        log.error("出现了:RuntimeException异常 ~~~~");   // 日志提醒
        return R.error("服务器繁忙,请稍后再试");        // 返回给前端用户
    }
}
